# 作业：
# 1、整理类的笔记到小红书
# 2、定义一个学生Student类。有下面的类属性：
# 1 姓名 name
# 2 年龄 age
# 3 成绩 score（语文，数学，英语) [每课成绩的类型为整数]
#
#
# 类方法：
# 1 获取学生的姓名：get_name() 返回类型:str
# 2 获取学生的年龄：get_age() 返回类型:int
# 3 返回3型:int门科目中最高的() 分数。get_course返回类
# 4 将每个实例学生对象写进txt文件里，要持久保存
# 举例：{"姓名":"a","年龄":29,"成绩":{"语文":99,"数学":100,"英语":85}
# 5 获取所有学生的信息
# 写好类以后，可以定义2个同学测试下:
# zm = Student('zhangming',20,[69,88,100])
# 返回结果：
# zhangming
# 20
# ;
# class student():
#     def __init__(self,name,age,score):
#         self.name=name
#         self.age=age
#         self.score=score
#     def score_(self):
#         f=max(self.score)
#         return f"3门科目中最高的分数是{f}"
#     def i(self):
#         dict1= {'语文': self.score[0], '数学': self.score[1], '英语': self.score[2]}
#         return "大家好，我的名字是{},今年{}岁，成绩是{}".format(self.name,self.age,dict1)
#     def set(self):
#         import os
#         dict1={}
#         dict1['姓名'] = self.name
#         dict1['年龄'] = self.age
#         dict1['成绩'] = {'语文': self.score[0], '数学': self.score[1], '英语': self.score[2]}
#         path = './xin_student'
#         with open(path, "a", encoding='utf-8') as f:
#             f.write(str(dict1))
#             f.write('\n')
#             return ""
#     def look(self):
#             with open(path, "r", encoding='utf-8') as f:
#                 return f.read()
# s1=student("林梓萱",23,[99,100,85])
# s2=student("林子萱",22,[110,150,98])
# print(s1.i())
# print(s1.score_())
# print(s2.i())
# print(s2.score_())
# print(s1.set())
# print(s2.set())

# 3、定义一个字典类：dictclass。完成下面的功能：
# dict = dictclass({你需要操作的字典对象})
# 1 删除某个key
# 2 判断某个键是否在字典里，如果在返回键对应的值，不存在则返回"not found"
# get_dict(key)
# 3 返回键组成的列表：返回类型;(list)
# get_key()
# 4 合并字典，并且返回合并后字典的values组成的列表。返回类型:(list)
# update_dict({要合并的字典})
# 100
#=============  1  ================
# class dictclass():
#     def __init__(self,num):
#         self.num = num
#     def del_dict(self,key):
#         if key in self.num:
#             del self.num[key]
#             print(f"成功删除'{key}'")
#         else:
#             print(f"'{key}'不存在")
# dict1 = {"s": 2, "d": 3, "h": 5}
# del_key_result = dictclass(dict1)
# del_key_result.del_dict("s")
#======================  2  =========================
# class dictclass():
#     def __init__(self,num):
#         self.num = num
#     def get_dict(self,key):
#         if key in self.num:
#             print(f"键在字典里:{key}")
#         else:
#             print(f'not found')
# dict1 = {"s": 2, "d": 3, "h": 5}
# result = dictclass(dict1)
# result.get_dict("j")
#=============================  3   ===================
# class dictclass():
#     def __init__(self,num):
#         self.num = num
#     def get_key(self,key):
#         dict1 = {"s": 2, "d": 3, "h": 5}
#         result_get_key = []
#         result.get_key()
#
# ========================================================================================
# class dictclass():
#     def __init__(self,dict):
#         self.dict=dict
#     def del_dict(self,key):
#         if key in self.dict:
#             del self.dict[key]
#         else:
#             return "key不存在"
#     def get_dict(self,key):
#         if key in self.dict:
#             return self.dict[key]
#         else:
#             return "not found"
#     def get_key(self):
#         return list(self.dict.keys())
#     def update_dict(self,dict2):
#         self.dict.update(dict2)
#         return list(self.dict.values())
#
# dict1 = {"a":"19","h":"20","j":"123","w":"6"}
# dict_obj = dictclass(dict1)
# dict_obj.del_dict("a")
# print(dict_obj.dict)
# dict_obj.del_dict("g")
# print(dict_obj.dict)
# value = dict_obj.get_dict('h')
# print(value)
# value = dict_obj.get_dict('6666666')
# print(value)
# keys = dict_obj.get_key()
# print(keys)
# dict2 = {"shenme":"asdfgh"}
# new_dict = dict_obj.update_dict(dict2)
# print(dict_obj.dict)
# print(new_dict)
# 4、定义一个列表的操作类：Listinfo
# 包括的方法:
# 1 列表元素添加: add_key(keyname) [keyname:字符串或者整数类型]
# 2 列表元素取值：get_key(num) [num:整数类型]
# 3 列表合并：update_list(list) [list:列表类型]
# 4 删除并且返回最后一个元素：del_key()
# a = Listinfo([44,222,111,333,454,'sss','333'])
#
# 5、做一个学生点名系统，系统里支持：存入学生、更改学生、删除学生、点到学生姓名方法
#
# 存入学生（姓名、年龄、家庭地址、手机号）： 存入成功后，提示xxx存入成功
# 更改学生（姓名、年龄、家庭地址、手机号）：可以修改学生内容的任意一个字段
# 删除学生：删除的学生将不在展示
# 展示全部学生：可以看到全部的学生姓名
# 学生姓名：随机抽取任意一个存在的学生信息，然后打印：到！。举例： 刘闯到！
#
# 以上内容，需要连接数据库，每次的数据都需要增、删、改、查去做
#
# student表：name、age、address、phone_number
#
# 6、点餐管理系统
# 1》、餐馆可以新增菜品、下架菜品、修改菜品对应的库存，所有菜品的
# 2》、每个菜品，都有库存均为999，每出一道菜，库存-1,菜品有对应的价格，餐厅老板定义价格每道菜不允许超过15元,
# 没有小数单位，均为整数
# 3》、餐馆后台有点赞系统，能够收集客户对菜品的喜好，0~5分
# 4》、有菜品评分提报功能，对平均分数（菜品总分/打分人数）低于3分的菜品进行强制下架；
# class Restaurant():
#     def __init__(self):
#         self.menu = {}
#     def add_new(self,name,price):
#         if name not in self.menu:
#             self.menu[name] = {"价格":price,"菜名":name}
#             print(f"成功新增菜品：{name},价格为：{price}")
#         else:
#             print(f"菜品{name}已存在")
#     def remove_dish(self,name,price):
#         if name in self.menu:
#             del self.menu[name]
#             print(f"成功下架菜品：{name},价格为：{price}")
#         else:
#             print(f"菜品{name}，不存在")
#     def update(self,name,price):
#         if name in self.menu:
#             self.menu[name]["price"] = price
#             print(f"成功修改菜品 '{name}' 的价格为 {price} 元")
#         else:
#             print(f"菜品 '{name}' 不存在")
#     def decrease_stock(self):
#         if self.stock > 0:
#             self.stock -= 1
#             print(f"{self.name}库存减少1份，当前剩余库存：{self.stock}")
#         else:
#             print(f"{self.name}已售罄")
# 
#     def rate_dish(self, name, rating):
#         if name in self.menu:
#             dish = self.menu[name]
#             dish["likes"].append(rating)
#             dish["score"] = sum(dish["likes"]) / len(dish["likes"])
#             dish["num_ratings"] += 1
#             if dish["score"] < 3:
#                 self.remove_dish(name)
#             print(f"成功对菜品 '{name}' 进行评分，当前平均分数为 {dish['score']:.2f}")
#         else:
#             print(f"菜品 '{name}' 不存在")
# 
# restaurant = Restaurant()
# restaurant.add_new("水煮肉片",14)
# restaurant.add_new("水煮肉片",14)
# restaurant.remove_dish("水煮肉片",14)
# restaurant.update("水煮肉片",15)
#
# 7、定义一个桌子类（Desk），包含长（length）、宽（width）、高（height）属性，包含一个打印桌子信息属性的方法（showInfo）。实例化2个桌子对象，
# 为其赋予不同的属性值，并调用showInfo方法，输出每个桌子的信息。
# class Desk():
#     def __init__(self,length,width,height):
#         self.length = length
#         self.width = width
#         self.height = height
#     def showInfo(self):
#         print("桌子信息为，长:{},宽:{},高:{}".format(self.length ,self.width ,self.height))
# p1= Desk(length=11,width=4,height=1.5)
# p1.showInfo()
#
# 8、定义一个用户类(User),用户名(username)和密码(password)是这个类的属性。
# class User():
#     def __init__(self,username,password):
#         self.username = username
#         self.password = password
# p1 = User(username="小花",password=123456789)
# print(p1.username)
# print(p1.password)
#
# 9、定义一个计算器类，有加减乘除四个方法
# class calculator():
#     def __init__(self,a,b):
#         self.a =a
#         self.b= b
#     def add(self):
#         return (self.a +self.b)
#     def subtract(self):
#         return (self.a - self.b)
#     def multiply(self):
#         return (self.a*self.b)
#     def divide(self):
#         return (self.a/self.b)
# p1 = calculator(a=6,b=4)
# print(p1.add())
# print(p1.divide())
# print(p1.subtract())
# print(p1.multiply())
#
# 10、创建一个名为Person的类，具有以下属性和方法：
# 属性：name（姓名），age（年龄）
# 方法：greet()，打印出一句问候语，包括该人的姓名和年龄
# class Person():
#     def __init__(self,name,age):
#         self.name = name
#         self.age = age
#     def great(self):
#         return self.name + "长命百岁"
# p1 = Person(name="小花",age=28)
# print(p1.great())
#
# 11、定义一个图书管理系统类，图书可以新增、修改、删除，要求新增的每个图书都加到txt文本里，数据持久化
# 新增：图书名、作者名称、新建年月日
# 修改：图书名、作者名称、新建年月日
# 删除：图书删掉，且不在展示
# 查看：全量查询，精确查询，需要用户传入形参来控制返回结果
#
# 12、创建一个名为"Car"的类，该类具有"品牌"和"颜色"属性。创建一个"start_engine"方法，该方法打印出"启动汽车引擎！"的消息。
# 创建一个"stop_engine"方法，该方法打印出"关闭汽车引擎！"的消息
# class Car():
#     def __init__(self,brand,colour):
#         self.brand= brand
#         self.colour=colour
#         print("品牌：{},颜色：{}".format(self.brand, self.colour))
#     def start_engine(self):
#         print("启动汽车引擎！")
#     def stop_engine(self):
#         print("关闭汽车引擎！")
# Car("奔驰一号","绿色")
# Car("红旗三号","黑色").start_engine()
# Car("三轮","24K金色").stop_engine()
#
#
# 13、淘宝商家后台，可以上架商品、下架商品，功能如下：
#  （1） 可以添加商品，商家添加完的商品会存到商品列表
#  1.1  商品要有名称、sku、价格
#  （2） 可以修改商品信息：名称、sku、价格
#  （3） 可以对商品进行下架，下架后的商品不再展示
#
# 14、定义一个人类
# 1.小明和小美都爱跑步
# 2.小美体重45.0公斤
# 3.小明体重75.0公斤
# 4.每次跑步都会减少0.5公斤
# 5.每次吃东西都会增加1公斤
# class person() :
#     def __init__(self,name,weight):
#         self.name=name
#         self.weight =weight
#     def run(self):
#         print("{}跑步去了".format(self.name))
#         self.weight -= 0.5
#     def eat(self):
#         print("{}又吃上了".format(self.name))
#         self.weight += 1
# ming = person("小明",75)
# mei = person("小美",45)
# ming.run()
# mei.eat()
# print("小明的体重为{}".format(ming.weight))
# print("小美的体重为{}".format(mei.weight))
#
# 15、士兵瑞恩有一把ak47
# 士兵可以开火（开火扣动的是班级）
# 抢能够发射子弹（把子弹打出去）
# 抢能够装子弹–增加子弹数量
# 要求没子弹，需要输出没有子弹了，且发射失败
# import time
#
# class who():
#     def __init__(self,name):
#         self.name=name
#         self.gun=None
#     def fire(self):
#         if self.gun:
#             if gun.bullect_count:
#                 self.gun.shoot()
#             else:
#                 print(f"士兵{self.name}没有子弹，等死ing")
#                 self.gun.add_bullet(5)
#         else:
#             print(f"士兵{self.name}没有枪，等死ing")
#     def kkk(self):
#         return f"士兵{self.name}去了缅甸"
# class Gun():
#     def __init__(self,model):
#         self.model=model
#         self.bullect_count=0
#     def add_bullet(self,nums):
#         self.bullect_count +=nums
#         print("填弹，继续开枪")
#         self.shoot()
#     def shoot(self):
#         print("开枪！！！")
#         self.bullect_count -=1
#         print(f"还剩下{self.bullect_count}颗子弹")
# ren=who("小天才")
# print(ren)
# gun=Gun("ak47")
# ren.gun=gun
# print(ren.kkk())
# ren.fire()


# num=1
# while True:
#     if num ==2:
#         time.sleep(5)
#     else:
#         num +=1
#         ren.fire()